package utils

import (
	"encoding/json"
	"os"
)

type GlobalObj struct {
	Name    string // 服务器名称
	Version string // 当前版本
	Host    string // 当前服务器主机监听的IP
	TcpPort int    // 当前服务器主机监听的端口

	MaxConn          int    // 当前服务器允许的最大连接数
	MaxPackageSize   uint32 // 当前zinx框架数据包的最大值
	WorkerPoolSize   uint32 // 当前业务工作Worker池的Goroutine数量
	MaxWorkerTaskLen uint32 // Zinx框架允许用户最多开辟多少个Worker(限定条件)
}

// GlobalObject 定义一个全局的对外的对象
var GlobalObject *GlobalObj

// 初始化当前的 GlobalObject
func init() {
	GlobalObject = &GlobalObj{
		Name:             "ZinxServerApp",
		Version:          "V0.6",
		TcpPort:          8999,
		Host:             "0.0.0.0",
		MaxConn:          1000,
		MaxPackageSize:   4096,
		WorkerPoolSize:   10,   // 当前业务工作Worker池的Goroutine数量
		MaxWorkerTaskLen: 1024, // Zinx框架允许用户最多开辟多少个Worker(限定条件)
	}
	// TODO 尝试从 conf/zinx.json 去加载用户自定义的参数
	//GlobalObject.Reload()
}

func (g *GlobalObj) Reload() {
	file, err := os.ReadFile("conf/zinx.json")
	if err != nil {
		panic(err)
	}
	//
	err = json.Unmarshal(file, &GlobalObject)
	if err != nil {
		panic(err)
	}

}
